import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;


public class LectureMsh {
	public static void lireMsh(String nomFichier) throws IOException {
		// initialisation de la lecture du fichier importe et de l'�criture sur le fichier a transmettre au moteur de calcul
		BufferedReader fImporte = new BufferedReader(new FileReader(nomFichier));
				
		String ligne;
		// On saute les 4 premieres lignes du fichier
		for(int i=0;i<4;i++) {ligne = fImporte.readLine();}
		
		// On recupere la liste des noeuds du maillage
		ligne = fImporte.readLine();
		int nbNoeuds = Integer.parseInt(ligne);
		Point3D[] noeuds = new Point3D[nbNoeuds+1];
		for(int i=0;i<nbNoeuds;i++) {
			ligne = fImporte.readLine();
			String[] mots = ligne.split(" ");
			int num = Integer.parseInt(mots[0]);
			double x = Double.parseDouble(mots[1]);
			double y = Double.parseDouble(mots[2]);
			double z = Double.parseDouble(mots[3]);
			noeuds[num] = new Point3D(x,y,z);
		}
		
		// On saute 3 lignes apres la lecture des noeuds
		for(int i=0;i<2;i++) { ligne = fImporte.readLine();}
		
		ligne = fImporte.readLine();
		int nbElt = Integer.parseInt(ligne);
		
		ArrayList<Facette> surface = new ArrayList<Facette>();
		for(int i=0;i<nbElt;i++) {
			ligne = fImporte.readLine();
			String[] mots = ligne.split(" ");
			int type = Integer.parseInt(mots[1]);
			if(type==2) {
				int n1 = Integer.parseInt(mots[5]);
				int n2 = Integer.parseInt(mots[6]);
				int n3 = Integer.parseInt(mots[7]);
				surface.add(new Facette(noeuds[n1],noeuds[n2],noeuds[n3]));
			}
		}
		fImporte.close();
		
		creerFichierFacette(surface);
	}
	
	public static void creerFichierFacette(ArrayList<Facette> surface) throws IOException {
		PrintWriter fFacette = new PrintWriter(new FileWriter("facettes.txt"));
		
		fFacette.println(surface.size());
		for(int i=0;i<surface.size();i++) {
			surface.get(i).ecrire(fFacette);
		}
		
		fFacette.close();
	}
	
	public static void main(String[] args){
		try{
			lireMsh("untitled.msh");
		}
		catch (IOException e) {
			System.out.println("erreur fichier msh");
		}
	}
}
